查看原文
其他

Perl学习04之IO及文件读写

pythonic生物人 pythonic生物人 2022-09-11

"pythonic生物人"的第9篇分享



摘要

Perl中print say printf sprintf的使用方法;Perl中格式化输出;Perl中文件的读写(open函数,文件句柄(file handle))。

目录

1、Perl中IO操作
print say printf sprintf区别

print

say

printf

sprintf

Perl格式化输出
I/O实例,格式化实例
2、Perl中读写文件操作
3、参考文献


正文开始啦



1、Perl中IO操作

  • print say printf sprintf区别

  • print

不自带\n;

  • say

自带\n,必须结合use 5.010才能使用;

  • printf

格式化输出字符串;

  • sprintf

只格式化,无print功能。

  • Perl格式化输出

Perl主要使用printf及sprintf格式化输出,printf sprintf常用格式符如下:


格式符 含义%% 百分号%s 字符串%d 整型数字%f 浮点型数字%e 科学计算法
%s %d %f %e可以设置显示字符宽度,补位字符(字符宽度不够时用于补齐的字符),小数位数。

  • I/O实例,格式化实例

例如,print1.pl
#!/usr/bin/perluse strict;use warnings;use 5.010;####Author:pythonic生物人###
#printprint "hah\n";
#saysay "hah1";#say自带\n,必须使用use 5.010
#printfprintf "hah2\n";
#%dprintf "%d\n", 3.1415126;#输出整型,3
#输出整型,字符宽度为10,向右对齐,宽度不足用0补齐,默认用空格补齐printf "%010d\n", 3.1415126;
#%fprintf "%010.2f\n", 3.1415126;#%010.2f#0 设置字符宽度补齐字符#10 设置字符宽度为10#.2 设置显示2位小数#f      输出浮点型
#%%printf "%d%%\n", 3.1415126;#输出百分号
#%eprintf "%010.3e\n", 23450000;
#%s#输出字符串,字符宽度为10,向右对齐,宽度不足用0补齐,默认用空格补齐printf "%010s\n", "haha";
#sprintfmy $result = sprintf("%010d",3.1415126);#()内方法类似于printfprint "$result\n";

perl print1.pl

hah

hah1

hah2

3

0000000003

0000003.14

3%

000000haha

0000000003



2、Perl中读写文件操作

借助open函数,文件句柄(file handle)实现,具体见下文实例。
例如,in1.pl
#!/usr/bin/perluse strict;use warnings;####Author:pythonic生物人###my $infile=$ARGV[0];#open 句柄, <, 待读入文件;open IN,"<",$infile;while (<IN>){ chomp; next if(/^#/); next if(/^$/); my @t=split /\t/,$_; my $outfile=$ARGV[1]; #open 句柄, >(覆盖写入)或者>>(追加写入), 待写入文件; open OUT,">>",$outfile; print OUT "$.\t$t[0]\n";#OUT绑定待写入句柄 close OUT;#关闭句柄OUT}close IN;#关闭句柄IN

perl in1.pl infile.txt outfile.txt

cat infile.txt#输入文档infile.txt

#testfile

a11 a12:a13 a14

a21 a22 a23


a31 a32 a33


cat outfile.txt#输出文档outfile.txt

2 a11

3 a21

5 a31


3、参考资料
http://www.tutorialspoint.com/perl/perl_printf.htmhttps://perldoc.perl.org/functions/printf.html

同系列文章
Perl学习01之标量数据
Perl学习02数组和哈希使用
Perl学习03之流程控制结构


持续更新,欢迎您"关注"、"在看"、"分享"


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存